package uoc.tds.pec3.servidor.bd;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import uoc.tds.pec3.comun.excepciones.ExcepcionGestorIncidencias;
import uoc.tds.pec3.comun.excepciones.ExcepcionRemota;

import uoc.tds.pec3.comun.utilidades.MensajesI18N;
import uoc.tds.pec3.comun.beans.Area;

/**
 * Gestiona la persistencia de datos de los Espacios
 */
public class GestorArea {
	
	/**
	 * Constructor de la clase GestorArea
	 */
	public GestorArea(){
		super();
	}

	/**
	 * Obtiene la lista de espacios almacenados en la base de datos
	 * @return Lista de espacios existentes
	 * @throws ExcepcionRemota
	 * @throws ExcepcionGestorIncidencias
	 */

	public List<Area> buscaEspacios() throws ExcepcionRemota, ExcepcionGestorIncidencias {
		
		List<Area> espacios = new ArrayList<Area>();
		try{
			Statement sentencia = GestorBBDD.creaSentencia(); 
			String consulta = "SELECT * FROM "+GestorBBDD.getSchema()+".tb_area order by area_name";
			ResultSet rs = sentencia.executeQuery(consulta);
			while (rs.next()){
				Area espacio = new Area();
				espacio.setId(rs.getInt("area_id"));
				espacio.setAreaname(rs.getString("area_name"));
				espacio.setCreationdate(rs.getDate("creation_date"));
				
				espacios.add(espacio);
			}
			sentencia.close();
			return espacios;
		}catch(SQLException sqle){
			throw new ExcepcionRemota(MensajesI18N.getMensajeI18N("error.beanArea.sentencia"),
					"(SQLException)" + sqle.getMessage());			
		}catch(Exception e){
			throw new ExcepcionGestorIncidencias(MensajesI18N.getMensajeI18N("error.beanArea.add"),
					"(Exception)" + e.getMessage());
		}
	}

}
